{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:37:07.123000",
     "start_time": "2016-09-12T22:37:07.114000"
    },
    "collapsed": true
   },
   "source": [
    "# Logistic Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们将建立一个逻辑回归模型来预测一个学生是否被大学录取。假设你是一个大学系的管理员，你想根据两次考试的结果来决定每个申请人的录取机会。你有以前的申请人的历史数据，你可以用它作为逻辑回归的训练集。对于每一个培训例子，你有两个考试的申请人的分数和录取决定。为了做到这一点，我们将建立一个分类模型，根据考试成绩估计入学概率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:41:59.715000",
     "start_time": "2016-09-12T22:41:52.726000"
    }
   },
   "outputs": [],
   "source": [
    "#三大件\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:43:37.650000",
     "start_time": "2016-09-12T22:43:37.635000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam 1</th>\n",
       "      <th>Exam 2</th>\n",
       "      <th>Admitted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34.623660</td>\n",
       "      <td>78.024693</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.286711</td>\n",
       "      <td>43.894998</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35.847409</td>\n",
       "      <td>72.902198</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.182599</td>\n",
       "      <td>86.308552</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.032736</td>\n",
       "      <td>75.344376</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Exam 1     Exam 2  Admitted\n",
       "0  34.623660  78.024693         0\n",
       "1  30.286711  43.894998         0\n",
       "2  35.847409  72.902198         0\n",
       "3  60.182599  86.308552         1\n",
       "4  79.032736  75.344376         1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "path = 'data' + os.sep + 'LogiReg_data.txt'\n",
    "pdData = pd.read_csv(path, header=None, names=['Exam 1', 'Exam 2', 'Admitted'])\n",
    "pdData.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:41:59.785000",
     "start_time": "2016-09-12T22:41:59.776000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 3)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pdData.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.260000",
     "start_time": "2016-09-12T22:41:59.790000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Exam 2 Score')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAE9CAYAAACleH4eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2K0lEQVR4nO3de3yV9ZXv8c8Congdb9RxhAhWq1aBKCnoWK31Vhxp1ZlqaWvKWCucOT2ItDVjoy3OOcCx4JwU6U0rWktptFpvnXHUHuttqo3GMV4K9UKFBI9KvBYsVSHr/PE8m2zCzs7e2Zfnsr/v1yuvnefJ3tm/PNlJVtZv/dbP3B0RERERic6wqAcgIiIiUusUkImIiIhETAGZiIiISMQUkImIiIhETAGZiIiISMQUkImIiIhEbETUAyjFPvvs42PHjo16GCIiIiKDeuKJJ15391G5PpbogGzs2LF0dHREPQwRERGRQZnZ2oE+pilLERERkYgpIBMRERGJWMUCMjO7zszWm9mzWef2MrNfm9kL4e2e4Xkzs6vM7EUze9rMjqrUuERERETippI1ZD8Bvgf8NOvcJcB97n6FmV0SHv8zcBpwcPg2BfhheCsiIiJ5fPDBB6xbt46//OUvUQ9FQiNHjmT06NHU1dUV/JiKBWTu/pCZje13+gzghPD9G4AHCAKyM4CferDT+e/MbA8z28/dX6nU+ERERNJg3bp17LbbbowdOxYzi3o4Nc/deeONN1i3bh3jxo0r+HHVriHbNyvIehXYN3x/f6A7637rwnMiIiKSx1/+8hf23ntvBWMxYWbsvffeRWcsIyvqD7NhXuzjzGymmXWYWUdPT08FRiYiIpIsCsbiZSjfj2oHZK+Z2X4A4e368PzLwJis+40Oz23H3a9x90Z3bxw1KmdvteTp6oIFC8DD+NQ9OO7qinZcIiIiBbr99tsxM/7whz/k/PgJJ5xQVO/Qjo4OLrzwQgAeeOABHnnkkW2ea+XKlUWPcddddy36MdVS7YDsTmBG+P4M4I6s818KV1seDbxTU/Vjy5fDZZfB3LlBMDZ3bnC8fHnUIxMRESlIW1sbH//4x2lrayvL52tsbOSqq64CyheQxVkl2160AY8Ch5jZOjM7H7gCOMXMXgBODo8B7gL+CLwI/Bj475UaVyy1tMCcObBkCQwbFtzOmROcFxERKaPubpg9GyZPDm67uwd/zGA2btzIf/7nf7Js2TJuvPFGADZt2sT06dM57LDDOOuss9i0adPW+++6665cfPHFHH744Zx88sk89thjnHDCCRx44IHceeedQBCETZs2jTVr1vCjH/2I1tZWGhoaePDBB7nzzju5+OKLaWhoYPXq1axevZqpU6cyadIkjjvuuK1ZupdeeoljjjmG8ePHc9lll5X+hVaSuyf2bdKkSZ4avb3uQX4seOvtjXpEIiKSACtXriz4vl1d7nvu6V5XF/ypqasLjru6ShvDz372M//yl7/s7u7HHHOMd3R0+L/+67/6eeed5+7uTz31lA8fPtwff/xxdw9qyO+66y53dz/zzDP9lFNO8ffff987Ozt94sSJ7u5+//33++mnn+7u7vPmzfPFixdvfb4ZM2b4zTffvPX4xBNP9Oeff97d3X/3u9/5Jz/5SXd3//SnP+033HCDu7t/73vf81122aW0L7QIub4vQIcPENOoU38cZKYps2WmL0VERMpk0SLYuBE++CA4/uCD4HjRotI+b1tbG9OnTwdg+vTptLW18dBDD3HuuecCMGHCBCZMmLD1/jvssANTp04FYPz48XziE5+grq6O8ePHs2bNmqKee+PGjTzyyCOcffbZNDQ0MGvWLF55Jah6+u1vf8vnP/95AJqamkr7Iiss0ZuLp8bChX3TlK2tQTC2ZAmMGgWXXhr16ArS3R38QLe3w5Qp0NwMY8YM/jgR6aOfI6m09va+YCzjgw/gsceG/jnffPNNfvOb3/DMM89gZmzZsgUz48gjjxzwMXV1dVtXIg4bNowdd9xx6/ubN28u6vl7e3vZY4896OzszPnxpKxAVYYsDpqaYP78IBgzC27nzw/OJ0B3N0ycCFdfDY8/HtxOnFieugSRWqGfI6mGKVOgf/P4urqgnmyobrnlFpqamli7di1r1qyhu7ubcePGMWnSJH7+858D8Oyzz/L0008P+Tl22203NmzYkPN49913Z9y4cdx8881AUIr11FNPAXDsscdurWlbsWLFkJ+/GhSQxUF9fZAJy0TxZsFxfX204ypQpVLgIrVEP0dSDc3NsOuufUFZXV1w3Nw89M/Z1tbGWWedtc25f/iHf+Cll15i48aNHHbYYXz7299m0qRJQ36OT3/609x22200NDTw8MMPM336dBYvXsyRRx7J6tWrWbFiBcuWLWPixIkc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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "positive = pdData[pdData['Admitted'] == 1] # returns the subset of rows such Admitted = 1, i.e. the set of *positive* examples\n",
    "negative = pdData[pdData['Admitted'] == 0] # returns the subset of rows such Admitted = 0, i.e. the set of *negative* examples\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(10,5))\n",
    "ax.scatter(positive['Exam 1'], positive['Exam 2'], s=30, c='b', marker='o', label='Admitted')\n",
    "ax.scatter(negative['Exam 1'], negative['Exam 2'], s=30, c='r', marker='x', label='Not Admitted')\n",
    "ax.legend()\n",
    "ax.set_xlabel('Exam 1 Score')\n",
    "ax.set_ylabel('Exam 2 Score')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The logistic regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "目标：建立分类器（求解出三个参数 $\\theta_0         \\theta_1         \\theta_2 $）\n",
    "\n",
    "\n",
    "设定阈值，根据阈值判断录取结果\n",
    "\n",
    "### 要完成的模块\n",
    "-  `sigmoid` : 映射到概率的函数\n",
    "\n",
    "-  `model` : 返回预测结果值\n",
    "\n",
    "-  `cost` : 根据参数计算损失\n",
    "\n",
    "-  `gradient` : 计算每个参数的梯度方向\n",
    "\n",
    "-  `descent` : 进行参数更新\n",
    "\n",
    "-  `accuracy`: 计算精度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  `sigmoid` 函数\n",
    "\n",
    "$$\n",
    "g(z) = \\frac{1}{1+e^{-z}}   \n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.268000",
     "start_time": "2016-09-12T22:42:00.263000"
    }
   },
   "outputs": [],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.574000",
     "start_time": "2016-09-12T22:42:00.270000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7ff2a039c430>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "nums = np.arange(-10, 10, step=1) #creates a vector containing 20 equally spaced values from -10 to 10\n",
    "fig, ax = plt.subplots(figsize=(12,4)) #图片尺寸\n",
    "ax.plot(nums, sigmoid(nums), 'r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sigmoid\n",
    "* $g:\\mathbb{R} \\to [0,1]$\n",
    "* $g(0)=0.5$\n",
    "* $g(- \\infty)=0$\n",
    "* $g(+ \\infty)=1$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.581000",
     "start_time": "2016-09-12T22:42:00.576000"
    }
   },
   "outputs": [],
   "source": [
    "#返回y .theta的转置\n",
    "def model(X, theta):\n",
    "    \n",
    "    return sigmoid(np.dot(X, theta.T))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\begin{array}{ccc}\n",
    "\\begin{pmatrix}\\theta_{0} & \\theta_{1} & \\theta_{2}\\end{pmatrix} & \\times & \\begin{pmatrix}1\\\\\n",
    "x_{1}\\\\\n",
    "x_{2}\n",
    "\\end{pmatrix}\\end{array}=\\theta_{0}+\\theta_{1}x_{1}+\\theta_{2}x_{2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.649000",
     "start_time": "2016-09-12T22:42:00.586000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<bound method NDFrame.head of        Exam 1     Exam 2  Admitted\n",
      "0   34.623660  78.024693         0\n",
      "1   30.286711  43.894998         0\n",
      "2   35.847409  72.902198         0\n",
      "3   60.182599  86.308552         1\n",
      "4   79.032736  75.344376         1\n",
      "..        ...        ...       ...\n",
      "95  83.489163  48.380286         1\n",
      "96  42.261701  87.103851         1\n",
      "97  99.315009  68.775409         1\n",
      "98  55.340018  64.931938         1\n",
      "99  74.775893  89.529813         1\n",
      "\n",
      "[100 rows x 3 columns]>\n"
     ]
    }
   ],
   "source": [
    "\n",
    "print(pdData.head)\n",
    "pdData.insert(0, 'Ones', 1) # in a try / except structure so as not to return an error if the block si executed several times\n",
    "\n",
    "\n",
    "# set X (training data) and y (target variable)\n",
    "orig_data = pdData.values # convert the Pandas representation of the data to an array useful for further computations\n",
    "cols = orig_data.shape[1] #axis=1 横向\n",
    "X = orig_data[:,0:cols-1]\n",
    "y = orig_data[:,cols-1:cols]\n",
    "\n",
    "# convert to numpy arrays and initalize the parameter array theta\n",
    "#X = np.matrix(X.values)\n",
    "#y = np.matrix(data.iloc[:,3:4].values) #np.array(y.values)\n",
    "theta = np.zeros([1, 3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        , 34.62365962, 78.02469282],\n",
       "       [ 1.        , 30.28671077, 43.89499752],\n",
       "       [ 1.        , 35.84740877, 72.90219803],\n",
       "       [ 1.        , 60.18259939, 86.3085521 ],\n",
       "       [ 1.        , 79.03273605, 75.34437644]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.],\n",
       "       [0.],\n",
       "       [0.],\n",
       "       [1.],\n",
       "       [1.]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0.]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.683000",
     "start_time": "2016-09-12T22:42:00.652000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((100, 3), (100, 1), (1, 3))"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape, y.shape, theta.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 损失函数\n",
    "将对数似然函数去负号\n",
    "\n",
    "$$\n",
    "D(h_\\theta(x), y) = -y\\log(h_\\theta(x)) - (1-y)\\log(1-h_\\theta(x))\n",
    "$$\n",
    "求平均损失\n",
    "$$\n",
    "J(\\theta)=\\frac{1}{n}\\sum_{i=1}^{n} D(h_\\theta(x_i), y_i)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.712000",
     "start_time": "2016-09-12T22:42:00.686000"
    }
   },
   "outputs": [],
   "source": [
    "def cost(X, y, theta):\n",
    "    left = np.multiply(-y, np.log(model(X, theta)))\n",
    "    right = np.multiply(1 - y, np.log(1 - model(X, theta)))\n",
    "    return np.sum(left - right) / (len(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.743000",
     "start_time": "2016-09-12T22:42:00.714000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6931471805599453"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost(X, y, theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算梯度\n",
    "\n",
    "\n",
    "$$\n",
    "\\frac{\\partial J}{\\partial \\theta_j}=-\\frac{1}{m}\\sum_{i=1}^n (y_i - h_\\theta (x_i))x_{ij}\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.769000",
     "start_time": "2016-09-12T22:42:00.747000"
    }
   },
   "outputs": [],
   "source": [
    "def gradient(X, y, theta):\n",
    "    grad = np.zeros(theta.shape)\n",
    "    error = (model(X, theta)- y).ravel() ##ravel转成一维\n",
    "    for j in range(len(theta.ravel())): #for each parmeter\n",
    "        term = np.multiply(error, X[:,j])\n",
    "        grad[0, j] = np.sum(term) / len(X)\n",
    "    \n",
    "    return grad"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradient descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "比较3中不同梯度下降方法\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.830000",
     "start_time": "2016-09-12T22:42:00.804000"
    }
   },
   "outputs": [],
   "source": [
    "STOP_ITER = 0\n",
    "STOP_COST = 1\n",
    "STOP_GRAD = 2\n",
    "\n",
    "def stopCriterion(type, value, threshold):\n",
    "    #设定三种不同的停止策略\n",
    "    if type == STOP_ITER:        return value > threshold\n",
    "    elif type == STOP_COST:      return abs(value[-1]-value[-2]) < threshold\n",
    "    elif type == STOP_GRAD:      return np.linalg.norm(value) < threshold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.858000",
     "start_time": "2016-09-12T22:42:00.833000"
    }
   },
   "outputs": [],
   "source": [
    "import numpy.random\n",
    "#洗牌\n",
    "def shuffleData(data):\n",
    "    np.random.shuffle(data)\n",
    "    cols = data.shape[1]\n",
    "    X = data[:, 0:cols-1]\n",
    "    y = data[:, cols-1:]\n",
    "    return X, y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.918000",
     "start_time": "2016-09-12T22:42:00.862000"
    },
    "cell_style": "center"
   },
   "outputs": [],
   "source": [
    "import time\n",
    "\n",
    "def descent(data, theta, batchSize, stopType, thresh, alpha):\n",
    "    #梯度下降求解\n",
    "    \n",
    "    init_time = time.time()\n",
    "    i = 0 # 迭代次数\n",
    "    k = 0 # batch\n",
    "    X, y = shuffleData(data)\n",
    "    grad = np.zeros(theta.shape) # 计算的梯度\n",
    "    costs = [cost(X, y, theta)] # 损失值\n",
    "\n",
    "    \n",
    "    while True:\n",
    "        grad = gradient(X[k:k+batchSize], y[k:k+batchSize], theta)\n",
    "        k += batchSize #取batch数量个数据\n",
    "        if k >= n: \n",
    "            k = 0 \n",
    "            X, y = shuffleData(data) #重新洗牌\n",
    "        theta = theta - alpha*grad # 参数更新\n",
    "        costs.append(cost(X, y, theta)) # 计算新的损失\n",
    "        i += 1 \n",
    "\n",
    "        if stopType == STOP_ITER:       value = i\n",
    "        elif stopType == STOP_COST:     value = costs\n",
    "        elif stopType == STOP_GRAD:     value = grad\n",
    "        if stopCriterion(stopType, value, thresh): break\n",
    "    \n",
    "    return theta, i-1, costs, grad, time.time() - init_time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.951000",
     "start_time": "2016-09-12T22:42:00.922000"
    }
   },
   "outputs": [],
   "source": [
    "def runExpe(data, theta, batchSize, stopType, thresh, alpha):\n",
    "    #import pdb; pdb.set_trace();\n",
    "    theta, iter, costs, grad, dur = descent(data, theta, batchSize, stopType, thresh, alpha)\n",
    "    name = \"Original\" if (data[:,1]>2).sum() > 1 else \"Scaled\"\n",
    "    name += \" data - learning rate: {} - \".format(alpha)\n",
    "    if batchSize==n: strDescType = \"Gradient\"\n",
    "    elif batchSize==1:  strDescType = \"Stochastic\"\n",
    "    else: strDescType = \"Mini-batch ({})\".format(batchSize)\n",
    "    name += strDescType + \" descent - Stop: \"\n",
    "    if stopType == STOP_ITER: strStop = \"{} iterations\".format(thresh)\n",
    "    elif stopType == STOP_COST: strStop = \"costs change < {}\".format(thresh)\n",
    "    else: strStop = \"gradient norm < {}\".format(thresh)\n",
    "    name += strStop\n",
    "    print (\"***{}\\nTheta: {} - Iter: {} - Last cost: {:03.2f} - Duration: {:03.2f}s\".format(\n",
    "        name, theta, iter, costs[-1], dur))\n",
    "    fig, ax = plt.subplots(figsize=(12,4))\n",
    "    ax.plot(np.arange(len(costs)), costs, 'r')\n",
    "    ax.set_xlabel('Iterations')\n",
    "    ax.set_ylabel('Cost')\n",
    "    ax.set_title(name.upper() + ' - Error vs. Iteration')\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 不同的停止策略"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 设定迭代次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:02.222000",
     "start_time": "2016-09-12T22:42:00.953000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 1e-06 - Gradient descent - Stop: 5000 iterations\n",
      "Theta: [[-0.00027127  0.00705232  0.00376711]] - Iter: 5000 - Last cost: 0.63 - Duration: 0.74s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.00027127,  0.00705232,  0.00376711]])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#选择的梯度下降方法是基于所有样本的\n",
    "n=100\n",
    "runExpe(orig_data, theta, n, STOP_ITER, thresh=5000, alpha=0.000001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 根据损失值停止"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设定阈值 1E-6, 差不多需要110 000次迭代 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:23.816000",
     "start_time": "2016-09-12T22:42:02.225000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Gradient descent - Stop: costs change < 1e-06\n",
      "Theta: [[-5.13364014  0.04771429  0.04072397]] - Iter: 109901 - Last cost: 0.38 - Duration: 15.88s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-5.13364014,  0.04771429,  0.04072397]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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cRERERGRMlAg3hzURlxEREREGkiBeFOpjbiIiIiINIICcRERERGRMlAg3hzUNEVEREREGkiBeFOpaYqIiIiINIICcRERERGRMlAgLiIiIiJSBgrEm4PaiIuIiIhIAykQbyq1ERcRERGRRihpIG5m481slpnNMbOzashzjJnNMLPpZnZDJn2NmT2ThomlLKeIiIiISEvrUKoZm1l74FJgHLAQmGpmE919RibPCOBsYC93f9vMPpWZxQp336lU5RMRERERKadS1ojvDsxx97nu/jFwIzAhl+erwKXu/jaAu79ZwvKUjtqIi4iIiEgDlTIQ7w8syHxemNKyRgIjzewRM3vczMZnxnUxs8qUfnixBZjZqSlP5ZIlS5q18PWmNuIiIiIi0ggla5rSgOWPAMYCA4CHzGyUu78DDHb3RWY2DLjfzJ5395ezE7v7ZcBlABUVFaqWFhEREZE2o5Q14ouAgZnPA1Ja1kJgoruvcvd5wGwiMMfdF6XXucAUYOcSlrVp1DRFRERERBqolIH4VGCEmQ01s07AcUC+95M7iNpwzKw30VRlrpn1MrPOmfS9gBm0RmqaIiIiIiKNULKmKe6+2sxOAyYB7YEr3X26mZ0PVLr7xDTuIDObAawBznD3pWa2J/AXM1tL/Fm4ONvbioiIiIhIW2e+njSrqKio8MrKypZfsBnssAM8+2zLL1tEREREWpyZTXP3iqbOR0/WbA7PPVfuEoiIiIhIG1PuXlPavp12gj59yl0KEREREWljVCPeVBttBGvXlrsUIiIiItLGKBBvqk6dYNWqcpdCRERERNoYBeJN1bEjfPxxuUshIiIiIm2MAvGm6tQJPvqo3KUQERERkTZGgXhTDR8OzzwDJ58Mr7xS7tKIiIiISBuhQLypLrwQzjgDbrwRRo6E73wH3nyz3KUSERERkVZOgXhTde8Ov/wlvPQSfOlL8PvfRy35uefC8uXlLp2IiIiItFIKxJvLwIFw+eUwYwYccgicfz4MGwb/939qQy4iIiIi61Ag3ty22gpuugkqK2HXXeH734cRIyJIX7263KUTERERkVZCgXip7LorTJoE998P/fvDV78K220HN9+sBwCJiIiIiALxkvv0p+Gxx+COO6LP8WOOgd12iyDdvdylExEREZEyUSDeEsxgwgR49lm49lpYtgzGj4exY+Ghh8pdOhEREREpAwXi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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, n, STOP_COST, thresh=0.000001, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 根据梯度变化停止"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设定阈值 0.05,差不多需要40 000次迭代"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:32.050000",
     "start_time": "2016-09-12T22:42:23.818000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Gradient descent - Stop: gradient norm < 0.05\n",
      "Theta: [[-2.37033409  0.02721692  0.01899456]] - Iter: 40045 - Last cost: 0.49 - Duration: 5.90s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-2.37033409,  0.02721692,  0.01899456]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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IiIiIiKdhkK4iIiIiEiVtVqf8E5j1Cg44IBal0JERERE2hG1hLdUrk+4iIiIiEgTKYRXgi7KFBEREZEyKIS3lFrCRURERKRMCuGVoJZwERERESmDQnhLqSVcRERERMqkEF4JagkXERERkTIohLeUWsJFREREpEwK4ZWglnARERERKYNCeEupJVxEREREyqQQXglqCRcRERGRMiiEt5RawkVERESkTArhlaCWcBEREREpg0J4S6klXERERETKpBBeCWoJFxEREZEyKIS3lFrCRURERKRMCuGVoJZwERERESmDQnhLqSVcRERERMqkEF4JagkXERERkTIohLeUWsJFREREpEwK4ZWglnARERERKYNCeEupJVxEREREyqQQXglqCRcRERGRMiiEt5RawkVERESkTArhlaCWcBEREREpg0J4S6klXERERETKpBAuIiIiIlJlCuGVoO4oIiIiIlIGhfCWUncUERERESmTQnglqCVcRERERMqgEN5SagkXERERkTIphFeCWsJFREREpAwK4S2llnARERERKZNCeCWoJVxEREREyqAQ3lJqCRcRERGRMimEV4JawkVERESkDArhLaWWcBEREREpU6uGcDObYmbPm9kiM7u0xDznmtkCM5tvZjdmxm8zs9lpuKM1y9liagkXERERkTJ0a60Vm1lX4KfAicASYIaZ3eHuCzLzjAC+Dhzl7qvNbLfMKt519/GtVb6KUUu4iIiIiJSpNVvCDwMWuftid98M3AycWTDPZ4GfuvtqAHd/qxXL03rUEi4iIiIiZWjNED4IeD3zeEkalzUSGGlm08zsSTObkpnWy8xmpvFnFXsCM7sozTNzxYoVFS18k6klXERERETK1GrdUcp4/hHAZGAw8IiZHeDua4C93X2pme0DPGBmc939pezC7n41cDXAhAkTatccrZZwERERESlDa7aELwWGZB4PTuOylgB3uPsWd38ZeIEI5bj70vR3MfAQcFArlrX51BIuIiIiImVqzRA+AxhhZsPNrAdwHlB4l5M/Eq3gmNlAonvKYjPrb2Y9M+OPAhbQVqklXERERETK0GrdUdx9q5ldDNwDdAWucff5ZnYFMNPd70jTTjKzBcA24CvuvsrMjgT+x8y2E18UrszeVaVNUUu4iIiIiJSpVfuEu/tdwF0F4/4t878DX0pDdp7HgQNas2wVpZZwERER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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, n, STOP_GRAD, thresh=0.05, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对比不同的梯度下降方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Stochastic descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:32.786000",
     "start_time": "2016-09-12T22:42:32.052000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Stochastic descent - Stop: 5000 iterations\n",
      "Theta: [[-0.38263231 -0.03272205  0.00072399]] - Iter: 5000 - Last cost: 1.76 - Duration: 0.32s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.38263231, -0.03272205,  0.00072399]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, 1, STOP_ITER, thresh=5000, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有点爆炸。。。很不稳定,再来试试把学习率调小一些"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:34.091000",
     "start_time": "2016-09-12T22:42:32.788000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 2e-06 - Stochastic descent - Stop: 15000 iterations\n",
      "Theta: [[-0.00202131  0.01005956  0.00095033]] - Iter: 15000 - Last cost: 0.63 - Duration: 0.88s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.00202131,  0.01005956,  0.00095033]])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAAEWCAYAAABc2eBcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAA/uUlEQVR4nO3debxd873/8dfHOYkgSEi4IgiVmIk6VVNVW0Nqiqoaa7zoRCfVCqWm/i7VW64rrmoNVXMpYgw1VM05MYREo2liCDLIKCHz5/fH57vtdXb2PmefnL3PPjnn/Xw89mPvNX/Xd33XWp/1Xd+1trk7IiIiIiJSGavUOgEiIiIiIp2JAmwRERERkQpSgC0iIiIiUkEKsEVEREREKkgBtoiIiIhIBSnAFhERERGpIAXYIiIiItJlmNkxZvZoVRfi7p3mA5wAvA58AkwB/g/olRl+PrAYmAfMBp4Dds0M3wuYXDDPfYAngY+BGcCrwC+AHpl53pwZ31MaVsn0uxi4sWC+PVM6Hi6yHm8De5e5vkvTfOYBk4AbgEFFxt0rpe0XqXvjzHTz0rD5me4vZZbhwBFt3DYD0nzqiwzLbpfcZ3bBOAZMBMYVmf4pYEGa7iPgr8AGBfN34PBMv/rUb0DqvhG4uCCtDxUs52bg/Ez3msDv0vaaD7wL3AV8sYU8yK3j28BZldhWKf2LCsZ7rcxtswvwGDATmA78pSD/WjVvYFXgemAusR/+tGD46sDVaVvNAZ5uQ7nqlZY1hdhH3wLOKifP0vS7AU+kaecA9wNbFyxjLeCKtH3nAf9O3X1K7a/EfvNMibI6C1i1oH9/4O5MnryR5vGlTJrnF5SfeWk9nwJOLje9RdKUzZsZwOMU7O803cdyn/szw88mjj/zgMnAHQXT7wc8nfJ5OvB34OASx7Hcp18mf6cBa2Tmd3JKU1nbuSOVKWL/Xpam+RgYD5xYZtq6E8eYt9Py9yrjWLpZZvhgYDRxjhwNDC44xl6aysCM9NvKmbZEOT8ZOCaTjk8z6z0PmJfZvp8WpPmqImVjLvAacGCR5Z2f8uOLqbvc5e6dmUd/4Ja07vOBlwqXRRnnd+A/gX+mbTsVeAhYcwWPb8W25+wVmVdH+lAQa1FwDKvC8gZQIv6o5qfT1GCb2RnEAeFMYG0iaNgEeMzMumdGvcPdewJ9iMD5L83M81vEwexWYBN3Xxc4gtgRN2omOf2AI1tI8jeBhcA+ZvYfLYzbnOfT+qwN7E0cTEab2bYF4x1PBFDHAbj7u+7eM/dJ4+yQ6fePYtNV0R3Z9Lh7r4LhewLrAZuZ2ReKTH9aWo/NiYuX3xYMnwlcYGZ1rUjTF81st2IDzGxV4iS6HXAgEdRsBdwOfL2F+fZKaT0MONfM9ikYvqLb6jcFebhDmevZG7iWOAhtQpwYbigYpzXzPh8YmOb1FeDnZjYkM/xaYB0iv9YBflJmOou5nNjeWxH7wMHAhHLyzMx2BR4F7iP22U2JE/izZrYZQDp2PA5sAwwhtvOuxEl459Yk1MwGEAGzp3Rm/Rl4j8izdYFjganu/o/MOmyTxu2VWY93C5axoundIS1jC+KC6ioz+1XBOKcVlIGD0jKPT+ndO82jIaUhl6bDiOPsTcSxc33gPOCgzLyfL5h3T3f/IDO8DvhRYaJbsW+0RlXLVPJBmsdaRIXNH8xs6zLT9wzwbeICoJjCY+lE+Kxs3EdUFPQG/gTclzk/ngocAuwAbE9sn++UOW1R7n5LJr++nlvvgjwEOKggzadlhuXOcb2IC/PbzaxXbqCZGXGszB4zy11ubh7rpHxdROw7fYhycGsqv1klz+9m9mXg/wFHufuaRBm6o7k8KkNL58bcsuvL6dec1o7fUbTyvN5+2iOKr/aHOEjNI1NDmfr3JGpLTkrd59O0tnlr4mTX1wuuqoir+feAM1pYduE8nThg/ot0tUTxGuwngF8DLwM/Kxj2NuXXYBerJXsAuCvTvQYRNB1JHEAaikzjwOYF/TYhrvy/CSwB/qMN22gAzddg39zC9NcTtQt/JdVuZIY9RdMavO8DYwvmfwtxojs+9SunBvsXwJOZ+XxWg03UznxIplZtRfKAqCU5swLb6rP0V2B/+jzw8YrOG/gA2DfTfRFwe/q9JVETtVaF0voGcEgZ4xXLs38AVxcZ92Hgpsx2ngr0bGbey+2vxfZNIqh8lrjr8UDBsHk0UyNYqvwUlv9y0ltm3hxG1FivW7iMItNfBVxRYpgRNelnNrP85fKqSP6eRQRQvTLr+VQ569IBy9ReLH+ndDpwWCvTOZniNdhFj6XAvsD7NK2VfhcYkn4/B5yaGfafwAvlTFtkWcuVl2Lrndm+Rc93hWWDuPvlwBcy/fYkKpaOIS4ku7d2ucQx6g0yNdOp/y+Ad3LrTQvnd+BnwL1tKX/lbs9Men6Q0jMpt64pjVOIC/dViTtYH6TPFaQ7aMXGL5j/qsTd/m0z/fqm/F6PuBB5II0zkyj/q5SxXp9tEyIOWkr+Dlnu7sWW5O+sjqfpHegbiRYKDxF3G/YGDgBeIc4v79H0bvO7NL37t2uRsrUbMIq46zQK2K2gPF9EHL8/Ji6ii94RzH46Sw32bkAPIvj6jLvPIzZAYQ1h7or8OGKHnFVknluQv23bWn8lNvIJxQaa2SZEAbslfSpdO/xXoqYs51CiUP0FGEnUkJbjOKDR3e8G3iQOYO3OzFYnTvi5/DqyVM2Jma1LrO+EgkEOnAv8ysy6lbnoq4FBZrZ3kWF7AyPdfX6Z8yqW1l2AbQvSuqLbqqVljTGzo8scfU9g7AoupzewAXExk/Ma+drXnYkT1gVm9pGZvW5m31yRZSUvAL82sxPNbGAr0rk6cdwodgfrTvLHjL2BR9KxpK2OI1+G9zOz9TPDXgCGm9mRZrZxG5ZRqfTeR1yEllNL/wJwnJmdaWYNBbVJWxB3++5qY3oaiZPcz9o4n3JUu0xlp1nFzL5B1M6+nvq1Zl8t5iAzm2lmY83se5n+2wBjPEUMyRjy++Y2lN5vW5q26lK5OpFoMvFOZtDxRDOcO1P3QbTePsDd7r6soP+dRNOgQZl+zZ3fXyT27QvMbPd0p7PaDgG+SFQYAvwHcWdwE+KuxDnEHf3BxN2JnYFfZqYvHP8z7r6QWN+jMr0PB/7u7tOAM4gAvS9xZ+ps4lxbNnc/hwjMc3fITjOzNYjg+lYikD8SuLrgLs/RRHC+JnH3YT5xjO1FBNvfM7ND0rh7pu9eaRnPZ9OQ7mA8CFxJ3EH8HfBgiieyyzsxpac7ZRyLOkuA3Qf4yN2XFBn2YRqec7iZzSauwE4hag2KTZeb5rPbcGZ2u5nNNrNPzOzYZtKTC+bOLREIHkscrMYRTQq2MbMdm5lfa31A7DA5xxO3mZYSBfbIMoPM49L4pO9qNhM5POVt7vNkZtihRHOaR4mdoBuxA2VdaWZziDasfYDTCxfg7iOImqKTy0zTp8QOfHGRYX1oWjYGp3TPNbPxLcz3IzP7FHieCOLvzQxb0W0F8LOCPPxTboC7b+/utzY3cVqP7Yma1jPLnXeB3O3XOZl+c4iDIMRF67apXz/gNOBPZrZVi2tX3OlEwHoaMM7MJphZS010IPaPVYjjQ6HsMWPdEuMUujebP8R2/YyZ7UGcwO5099FEu+hsEPUt4iRzLjDJzF4t0RSqJeWmt1nuvpjYl7LHkSsLysBFadybie2wH9G2epqZ/SKTHspI0y4F8/53kXHOA043s74rul5lqnaZAuiXyslHwK+AY919PJS/r5ZwJ9EsoS9xfjvPzHLBUU+a7pfQdN8sHD4H6JmaYLQ0bVvdW7D9T8kM2yXl1QKi6d+3U3CXu6j5FnBrKrN3sWLnqT6U3m654Tklz+8eTZIOJe4CPgjMMLPftbEJQ3PnRoD/cveZ7v5p6l4G/MrdF6Z+xwAXuvs0d58OXEDEIJQYv9CtNG0SczT5uGAxUaGyibsv9mjS1qoAu4QDgbfd/QZ3X+LurxCVnd/KjHOfuz/r7svcfYG7P+Xur6fuMcBtwJfLXN4BwL/c/c9pebcR7eizF2s3uPtbKY/uJC5YmtVZAuyPgD4l2g9tkIbn3OnRhml94pbQTiXmOSMzPQDufmSa9mWiTWBJ7v4QcWX3nSKDczVZuPv7xEmpIjWVyYbEbRXMbCOiHewtadh9RG1/YYDahJntTrQfvD31uhXYzswGlxh/rJnNS58vFRunBXe6e6/M5yuZYcen4UvcfQGxoxXm1w/dfW2i7WBvIpAr5pfEFX2PMtP1R2B9MyusFZlB07LxaiobhxK31ZrThzhhnUHcyegGK76tMn5bkIetKlNmtjlxK/tHvnzb1aLzNrNrMtv9bKL2HaLZFpnfH6ffnxIH5YvdfZG7/514FmLfIun5UmbeRWvU3f1Td/9/7r4TEczdCfwl1Ug0ZxZxYtmgyLDsMWNGiXEKHZLNH6KZUtbxwKPunpvvrWTKsLvPcvez3H0b4tj0KhF0WBnLzio3vc1KF3V9SceR5IcFZeDc3ACPNq97E7VH3wUuMrP9KHIcLeGFgnl/rnAEd3+DuB19VhvWqyOUKYg2wb3cfR13H+zutxeZptXcfZy7f+DuS939OeB/iLt/EPvmWgWTZPfNwuFrEQ8EehnTttUhBdv/D5lhL6R9qjcwgqZ3Z79BNF98KHXfAnx9BS7CPqL0dssN/0xz53d3f9jj+YR1gKFETfdylTrllMWkuXMjRHOIrOnpPJnTj6Y1/u+kfqXGL/QksLqZfdHiOZLBwD1p2GXEHdhHzWyima3wvllgE+IZqGylxTFEbXtOk/VO6XvSzKanyrbv0vTCqDmFeUTq3jDTnX3m4RPylUkldZYA+3mihvPQbE8zyz3g8HjhBOlEdypwvpkV27HGE23ODi0yrFznELdMVs+kaTfiAbBhZjbFzKYQt3eOLnGBsCK+QdSGQVyprgLcn5Y1kQjaWgq+jifaT76apnsx03857r6Nt+3BoqLMrD/wVeDbmfw6DNjfzJbbedz9daLGeXix4MTdHyMOCIUBUFHuvoi44r+IyI+cx4F9LW5ltVo6Af6OqJXJpWVFt1WbWTRb+htwkbv/udzp3P27me3+/9x9FlHrs0NmtB3INzkZU2w2Jeb9j8y8W7wV7e5ziQeM1iAuDpsbdz5x3PhWkcGHkz9m/I245btC2xnAzFZL8/xypgz/BNjBzHYoHD8dm35LHPRbCuoKtTm9yVAicHmpNROlWqy/ENt5W+I4+h7xHEcl/Iqomd2wpRFLpK8jlKn25OSPW2OB7QuOi9uT3zfHUnq/bWnaqvNo9vQ94FjL3/E9ngh03k371V+ICovWNrH5G3ComRXGRIcT5fetItMsd34vSO8yd3+ceN6q8KUDrS6LzSg8fhZ2f0AErDkbp36lxm86s7ibeifRTOQo4vmRj9Owj939DHffjHgY+Kdm9rXWr8JyaXiPaIaSvbDo6e7fa2aaW4kLsI1SZds15Mt+S7XqhXkEkU/vl70GRXSKANvd5xBB0P+a2RAz65autO4krjKLBgwet+RGAj8vMmwZUcP4KzM7xcx6WxhI1DCVk66niFrybIB0PNG2aGviSnAwsfOtRtO3T3Qzsx6ZT7PBt5nVmdmmZva/RK3oBZnlXZBZ1mDiZLe/NW1flJ1XD+LAcmrBdKfT9guBVQvWq6UyeCxxcNsik45BxHY9qsQ0fyK2UeGbGnLOocg2b8afiUA3+yaMm4hA8h4z2zblfw/iDQqtcQnxlo1cIN2qbVUJZrYhcRK4yt2vqcAsbwJ+mfaZLYmA6MY07GnigZNhZlaf7pR8hdgPW83MzjWzL5hZ95SHPyIeuGmpmQ5ETejxZvZDM1szpfdi4gGY3P6Te7vH3Wa2pUWb2XXN7Gwz27/MZB5CPMST3ee3Ii6Cj0vrcWkqR/VmtiYRSExw9xnFZtiMNqXXzNYxs2OA4cCl5SzfzE4wswNSHq5i0ZxiG+DFVPv5U+J2+olmtlYaZw8zu7aV64a7TyDeyvDD1k5brnYoU21N36opXQDd03HU0rChmXPVzkQ+3ZfGfYoohz9M88i9qeOJ9H0TESBtaGb9iPPfjWVO2y7cfSZxV/G8dNz6GtGcYDD5NsaX0vpmIpcTb4y5zsz+I+XpUcS54sxUjgvT8hQF5/eU/0cWbIMvE+36a+U24njc16JS6jzigf3WuJV4g9ox5JuHYGYHmtnmqfzNIcpIYTv2ckwFsm/ZeYB4/unYFM91S/tkc00J1wRmuvuClO/Zi6zpKV2bFZ0y7oAMMrOj0zH4COJ4/cAKrEueV+hp147wIZ56foO4DT0V+D3QOzP8fAqeyCVqj+cTDdf3Yvmnu4cQTTjmEbc7XyHap65RbJ4UPFme5u/EgaoHcRvxoCJpv5r05g/y7zjNfpZ7iwNN3xE6n7il8SdgqzR8F6KGtG+RaccSDxUsl26ivdWHQLeCaVZLebDce0jL2DYDiqyTEw9lnc/y7/qcl7bJP4HTi8zv58QDmFD8ifVfZIYX2+4P0fJbRLJv+zg89Ts/029t4onsdzL5fzewcwt5kJ2vpW1x7opsq0y/G1n+XdUfFczjmBLp+hXLv195XrnzLjK/7Huwp7L8e7C3IWr65gPjgG+0YZ//JbHPzyWaMzxF5unv5vIs9d8jTTMvzeNBMk/MF2zn98i/V/p35N+w8TbNvEUEeAT47yLLPpy47VgP/C/xJoB5xMngAdJ+3Fz5KVb+W0pvibzJvc95JnFL+Ogiyyh8D/boNOxQ4un6WSkPXwdOKJh+CHFBkVu/p4ADMnlV7D3YXyiWv8RDkwuo3ltEqlqmKPFWi3L21Ux+FB5Hc8ex24hj9Dzi2PnDgml3JN5h/SnR1HHHzDADfpPWeWb6beVMWySNTcpkc+tN8fdg31O4H2XG70/csT4vVwYLhvcjzifblrHcbLnaOOXfTGJ/GAUMbW6bkzm/p+49iTsVH5F/h/rP21AWz6fEubFEepZbVyLuuJI4p3+YfvcoNX4zaZmQ8qZ7pt9PyP8PxGTg3Mywh4GzS8yryXKJC9C3iGPIlanfFsS+M50o00+Q3rREkTdbEXe230n5/gDxdqNsbHZhmtdsIjZqUraI/XY0caEwGtijVHkunLbUJ/fqGRERERERqYBO0URERERERKSjUIAtIiIiIlJBCrBFRERERCpIAbaIiIiISAVV6r3LNdenTx8fMGBArZMhIiIiIp3c6NGjP3L3kn9q1GkC7AEDBtDY2FjrZIiIiIhIJ2dmhf/+2ISaiIiIiIiIVJACbBERERGRClKALSIiIiJSQQqwRUREREQqSAG2iIiIiEgFKcAWEREREakgBdgiIiIiIhWkALutLr8c7r671qkQERERkQ5CAXZbXXUV3HtvrVMhIiIiIh2EAuy2qquDJUtqnQoRERER6SAUYLdVfT0sXVrrVIiIiIhIB6EAu61Ugy0iIiIiGQqw26quTjXYIiIiIvIZBdhtVV+vGmwRERER+YwC7LZSDbaIiIiIZFQ1wDazIWY23swmmNlZJcY53MzGmdlYM7s10/9SM3sjfY6oZjrbRA85ioiIiEhGfbVmbGZ1wHBgH2AyMMrMRrj7uMw4A4FhwO7uPsvM1kv9DwA+DwwGVgWeMrOH3X1utdK7wp57rtYpEBEREZEOpJo12DsDE9x9orsvAm4HhhaMcwow3N1nAbj7tNR/a+Bpd1/i7vOBMcCQKqZVRERERKQiqhlgbwi8l+menPplDQIGmdmzZvaCmeWC6NeAIWa2upn1Ab4CbFS4ADM71cwazaxx+vTpVVgFEREREZHWqVoTkVYsfyCwF9AfeNrMtnP3R83sC8BzwHTgeWC5hs7ufi1wLUBDQ4O3V6JFREREREqpZg32+zStde6f+mVNBka4+2J3nwS8RQTcuPuv3X2wu+8DWBomIiIiItKhVTPAHgUMNLNNzaw7cCQwomCce4naa1JTkEHARDOrM7N1U//tge2BR6uY1hV34omw/vq1ToWIiIiIdBBVayLi7kvM7DRgJFAHXO/uY83sQqDR3UekYfua2TiiCciZ7j7DzHoA/zAzgLnAt929Y/6by4gRMGMGjBsHW29d69SIiIiISI1VtQ22uz8EPFTQ77zMbwd+mj7ZcRYQbxLp+GbMiO9nnlGALSIiIiL6J0cRERERkUpSgF0prpeYiIiIiIgCbBERERGRilKALSIiIiJSQQqwK0VNREREREQEBdgiIiIiIhWlALtSli2rdQpEREREpANQgF0pSzrm/+CIiIiISPtSgF0pCrBFREREBAXYbffgg/Hdu3dt0yEiIiIiHYIC7Lbabrv4njy5tukQERERkQ5BAXZb5R5uPO+82qZDRERERDoEBdhtZVbrFIiIiIhIB6IAu61WURaKiIiISJ6iQxERERGRClKA3VYbbhjfBx5Y23SIiIiISIegALutzKBHD9hqq1qnREREREQ6AAXYlVBXB0uX1joVIiIiItIBKMCuBAXYIiIiIpIowK4EBdgiIiIikijArgQF2CIiIiKSKMCuBAXYIiIiIpJUNcA2syFmNt7MJpjZWSXGOdzMxpnZWDO7NdP/N6nfm2Z2pVkH/stEBdgiIiIiktRXa8ZmVgcMB/YBJgOjzGyEu4/LjDMQGAbs7u6zzGy91H83YHdg+zTqM8CXgaeqld42UYAtIiIiIkk1a7B3Bia4+0R3XwTcDgwtGOcUYLi7zwJw92mpvwM9gO7AqkA3YGoV09o2q6yiAFtEREREgOoG2BsC72W6J6d+WYOAQWb2rJm9YGZDANz9eeBJ4MP0GenubxYuwMxONbNGM2ucPn16VVaiLHV1sGxZ7ZYvIiIiIh1GrR9yrAcGAnsBRwF/MLNeZrY5sBXQnwjKv2pmXyqc2N2vdfcGd2/o27dvOya7gJqIiIiIiEhSzQD7fWCjTHf/1C9rMjDC3Re7+yTgLSLg/gbwgrvPc/d5wMPArlVMa9sowBYRERGRpJoB9ihgoJltambdgSOBEQXj3EvUXmNmfYgmIxOBd4Evm1m9mXUjHnBcrolIhzF7NkycWOtUiIiIiEgHULW3iLj7EjM7DRgJ1AHXu/tYM7sQaHT3EWnYvmY2DlgKnOnuM8zsLuCrwOvEA4+PuPv91Uprm02ZEh8RERER6fLM3WudhopoaGjwxsbG2iw894ruTpKXIiIiIlKamY1294ZSw2v9kGPnsnBhrVMgIiIiIjWmAFtEREREpIIUYFeS3oUtIiIi0uUpwK4kBdgiIiIiXZ4C7ErSu7BFREREujwF2JWkGmwRERGRLk8BdiUtWVLrFIiIiIhIjSnAriQ1ERERERHp8hRgV8Lpp8e3arBFREREujwF2JUweHB8qwZbREREpMtTgF0J9fXxrRpsERERkS5PAXYl1NXFt2qwRURERLo8BdiVoBpsEREREUkUYFfChAnxfdlltU2HiIiIiNScAuxKGDcuvm+4obbpEBEREZGaU4AtIiIiIlJBCrArwb3WKRARERGRDkIBdiUowBYRERGRRAG2iIiIiEgFKcCuhJ12qnUKRERERKSDUIBdCQccUOsUiIiIiEgHoQC7Evr1q3UKRERERKSDqGqAbWZDzGy8mU0ws7NKjHO4mY0zs7Fmdmvq9xUzezXzWWBmh1QzrW2y9tqwww4wdGitUyIiIiIiNVZfrRmbWR0wHNgHmAyMMrMR7j4uM85AYBiwu7vPMrP1ANz9SWBwGmcdYALwaLXSWhH19fqrdBERERGpag32zsAEd5/o7ouA24HCKt5TgOHuPgvA3acVmc9hwMPu/kkV09p2dXUKsEVERESkqgH2hsB7me7JqV/WIGCQmT1rZi+Y2ZAi8zkSuK3YAszsVDNrNLPG6dOnVyTRK0w12CIiIiJC7R9yrAcGAnsBRwF/MLNeuYFmtgGwHTCy2MTufq27N7h7Q9++fauf2ubU18PSpbVNg4iIiIjUXDUD7PeBjTLd/VO/rMnACHdf7O6TgLeIgDvncOAed19cxXRWhmqwRURERITqBtijgIFmtqmZdSeaeowoGOdeovYaM+tDNBmZmBl+FCWah3Q4TzwBzzxT61SIiIiISI1VLcB29yXAaUTzjjeBO919rJldaGYHp9FGAjPMbBzwJHCmu88AMLMBRA3436uVRhERERGRSjN3r3UaKqKhocEbGxtrlwCz+O4k+SkiIiIixZnZaHdvKDW81g85ioiIiIh0KgqwK2WDDWqdAhERERHpABRgV8ohh0CfPrVOhYiIiIjUmALsStF7sEVEREQEBdiVo/dgi4iIiAgKsCtHAbaIiIiIoAC7chRgi4iIiAgKsCtHAbaIiIiIoAC7curr409mli2rdUpEREREpIYUYFdKfX18qxZbREREpEtTgF0pCrBFREREBAXYlaMAW0RERERQgF05CrBFREREhDIDbDP7czn9ujQF2CIiIiJC+TXY22Q7zKwO2KnyyVmJKcAWEREREVoIsM1smJl9DGxvZnPT52NgGnBfu6RwZaEAW0RERERoIcB29/9y9zWBy9x9rfRZ093Xdfdh7ZTGlYMCbBERERGh/CYiD5jZGgBm9m0z+52ZbVLFdK186uriWwG2iIiISJdWboD9f8AnZrYDcAbwb+CmqqVqZaQabBERERGh/AB7ibs7MBS4yt2HA2tWL1krocmT4/v112ubDhERERGpqXID7I/NbBhwLPCgma0CdKteslZC99wT31deWdt0iIiIiEhNlRtgHwEsBE5y9ylAf+CyqqVqZfTii/H93HO1TYeIiIiI1FRZAXYKqm8B1jazA4EF7t5iG2wzG2Jm481sgpmdVWKcw81snJmNNbNbM/03NrNHzezNNHxAeatUI2p7LSIiIiKU/0+OhwMvAd8CDgdeNLPDWpimDhgOfB3YGjjKzLYuGGcgMAzY3d23AX6cGXwT8XrArYCdiXdvd1x33RXfm2+uYFtERESkC6svc7xzgC+4+zQAM+sL/A24q5lpdgYmuPvENM3txEOS4zLjnAIMd/dZAJn5bw3Uu/tjqf+8steoVr761fieMAF23RVGjaptekRERESkJsptg71KLvhNZpQx7YbAe5nuyalf1iBgkJk9a2YvmNmQTP/ZZvZXM3vFzC5LNeJNmNmpZtZoZo3Tp08vc1WqZNVV878bG2uXDhERERGpqXJrsB8xs5HAban7COChCi1/ILAX8eDk02a2Xer/JWBH4F3gDuAE4LrsxO5+LXAtQENDg1cgPSsuG2CLiIiISJfVbIBtZpsD67v7mWZ2KLBHGvQ88dBjc94HNsp090/9siYDL7r7YmCSmb1FBNyTgVczzUvuBXahIMDuUOqWq2AXERERkS6opWYeVwBzAdz9r+7+U3f/KXBPGtacUcBAM9vUzLoDRwIjCsa5l6i9xsz6EE1DJqZpe6W23gBfpWnbbRERERGRDqmlAHt9d1/urwlTvwHNTejuS4DTgJHAm8Cd7j7WzC40s4PTaCOBGWY2DngSONPdZ7j7UuBnwONm9jpgwB9asV4iIiIiIjVh8Q/oJQaa/cvdB5YYNsHdN69aylqpoaHBG2v9cKFZ/ncz+SoiIiIiKy8zG+3uDaWGt1SD3WhmpxSZ6cnA6LYmTkRERESks2npLSI/Bu4xs2PIB9QNQHfgG1VMl4iIiIjISqnZANvdpwK7mdlXgG1T7wfd/Ymqp0xEREREZCVU1nuw3f1J4iFEERERERFpRrn/5CitsdtutU6BiIiIiNSIAmwRERERkQpSgF0NS5fWOgUiIiIiUiMKsKthyRJ49lkYNarWKRERERGRdlbWQ47SSkuXwh57xG/94YyIiIhIl6Ia7GpYsqTWKRARERGRGlGAXUk/+EF8K8AWERER6bLURKSSrroKZs6ExsZap0REREREakQ12JVWV6cabBEREZEuTAF2pdXXw6RJtU6FiIiIiNSIAuxKq1erGxEREZGuTAF2pdXV1ToFIiIiIlJDCrArrTDA/uCD2qRDRERERGpCAXalXX110+4ZM2qTDhERERGpCQXYIiIiIiIVpAC72vRX6SIiIiJdigLsajv55FqnQERERETakQLsahs1qtYpEBEREZF2VNUA28yGmNl4M5tgZmeVGOdwMxtnZmPN7NZM/6Vm9mr6jKhmOkVEREREKqVq/4piZnXAcGAfYDIwysxGuPu4zDgDgWHA7u4+y8zWy8ziU3cfXK30iYiIiIhUQzVrsHcGJrj7RHdfBNwODC0Y5xRguLvPAnD3aVVMj4iIiIhI1VUzwN4QeC/TPTn1yxoEDDKzZ83sBTMbkhnWw8waU/9DqpjOyrr44vg+5pjapkNEREREaqJqTURasfyBwF5Af+BpM9vO3WcDm7j7+2a2GfCEmb3u7v/OTmxmpwKnAmy88cbtmvCShg2L4Lp7d7jlllqnRkRERETaWTVrsN8HNsp090/9siYDI9x9sbtPAt4iAm7c/f30PRF4CtixcAHufq27N7h7Q9++fSu/BitilVVgwACor/W1i4iIiIjUQjUD7FHAQDPb1My6A0cChW8DuZeovcbM+hBNRiaaWW8zWzXTf3dgHCsT/cGMiIiISJdUtWpWd19iZqcBI4E64Hp3H2tmFwKN7j4iDdvXzMYBS4Ez3X2Gme0G/N7MlhEXAZdk3z6yUlhzzVqnQERERERqwLyT1LQ2NDR4Y2NjrZPR1NChMGKEarNFREREOhEzG+3uDaWG658cq2mbbdQWW0RERKSLUYBdTd26wZIlqsEWERER6UIUYFdTt27xvWRJbdMhIiIiIu1GAXY15QLsBQtqmw4RERERaTcKsKvpkUfi+9JLa5sOEREREWk3CrCrafLk+J44sbbpEBEREZF2owC7mpYuje9VlM0iIiIiXYUiv2rKvaIvF2iLiIiISKenALua1lorvhVgi4iIiHQZCrCr6brr4nvPPWubDhERERFpNwqwq6l///hetqy26RARERGRdqMAu5q6d4/vRYtqmw4RERERaTcKsKsp90czixfXNh0iIiIi0m4UYFeTAmwRERGRLkcBdjXV1YGZAmwRERGRLkQBdrW5wx//WOtUiIiIiEg7UYDdHqZMqXUKRERERKSdKMAWEREREakgBdgiIiIiIhVUX+sEdHr77w/TptU6FSIiIiLSThRgV9tDD9U6BSIiIiLSjtRERERERESkghRgt5cxY2qdAhERERFpB1UNsM1siJmNN7MJZnZWiXEON7NxZjbWzG4tGLaWmU02s6uqmc528cortU6BiIiIiLSDqgXYZlYHDAe+DmwNHGVmWxeMMxAYBuzu7tsAPy6YzUXA09VKY7u46KL4PuGEmiZDRERERNpHNWuwdwYmuPtEd18E3A4MLRjnFGC4u88CcPfPXrdhZjsB6wOPVjGN1bfddrVOgYiIiIi0o2oG2BsC72W6J6d+WYOAQWb2rJm9YGZDAMxsFeC/gZ81twAzO9XMGs2scfr06RVMegWtombuIiIiIl1JraO/emAgsBdwFPAHM+sFfB94yN0nNzexu1/r7g3u3tC3b99qp3XFKMAWERER6VKq+R7s94GNMt39U7+sycCL7r4YmGRmbxEB967Al8zs+0BPoLuZzXP3og9Kdmhm+d+vvQbrrgv9+9cuPSIiIiJSVdUMsEcBA81sUyKwPhI4umCce4ma6xvMrA/RZGSiux+TG8HMTgAaVsrgGpoG2IMHx7d7TZIiIiIiItVXtfYL7r4EOA0YCbwJ3OnuY83sQjM7OI02EphhZuOAJ4Ez3X1GtdJUE2uvXesUiIiIiEg7Mu8ktakNDQ3e2NhY62QUl63FBvjkE1httdqkRURERETaxMxGu3tDqeF6Aq89FLa5PuggmDgRFi+uTXpEREREpGoUYLeHr32taffjj8PnPgenn16b9IiIiIhI1SjAbg9nn128/+9/377pEBEREZGqU4DdHgYNqnUKRERERKSdKMAWEREREakgBdgiIiIiIhWkALu9/PrXxftPmdK+6RARERGRqlKA3V7OOgsefBC+9a2m/Z96qibJEREREZHqqOZfpUvWKqvA/vvDAQc07T9hQm3SIyIiIiJVoRrs9vbLXzbtPvdcuOCC2qRFRERERCpOAXZ7y/25zH//d77f+efDY4/Biy/WJEkiIiIiUjlqItLe1lsP3OP3GWfk+++7b3wvXRrNSURERERkpaRIrqOZObPWKRARERGRNlCAXUu77rp8v+nT2z8dIiIiIlIxCrBr6bnn4De/adpv663h5Zdrkx4RERERaTMF2LV25pnwjW807bfTTjB5MvTsCQsXxp/UmOXbbouIiIhIh6UAuyO4/PJ4R3bWRhvB/PnQo0f+1X6zZ8f3mDGw224wb15+/EWL4OabFYSLiIiI1Jh5JwnIGhoavLGxsdbJaBuzlsdZsCCC7pzJk2HDDeGII+DOO6NfrbbpM8/E9x571Gb5IiIiIu3AzEa7e0Op4XpNX0fy8cew5prNjzNuXNPu/v1h8WKYMSPf7/33Iwhfd93WLf+ZZ+DDD5f/O/dyfelL8b1wIXTvvmLzEBEREVnJqYlIR9KzJ9x1V/PjfP7zy/fr1g0efzzf3b8/9OkDY8fCkiUwa1bUjl9ySen5Tp8eAfLhh8Orr0a/Tz6Ba66JeQB8+ml8z54Nf/5zNEvJefvt/O/2+MOcTz+NC4u33lKzmGqZPRvWXx/+/vdap0RERGSlogC7ozn00PgeODCagzz8cPw5zZgxrZ/XtttG8L3OOtE9bFgE2sU+662Xn27HHWGTTWCNNeB734t5fPnLsPrqMW7v3nDccbDVVnDiiTB6NGy6aX76PfeEm26KcadMiX4ffghz58LEibBsWfSbPz/mecklUeu+eHF+HkuXwj//Ce++G78Lrb561JJvsUVl/5gnlx/TpsE77zQddv/9cNtt+e5//hO+/vXi6esMXnop8uH880uPM306rLYa/OMf7ZYsaQfPPhvHnxXxyCOxD40dW9k0iYisRBRgdzS5t4W89RasuioMGQJTp8J220VN9FVXRQ2ze3xGjYrpLrkkAtcnn4Tdd297Ot59t2n3008vP87EiXDjjdBQpAnS8cfH9wYbxDr16wdrrw2f+xzU1UW/nj2jJnrYsKh1794dvvnNGFZfHwH8JpvE78ILgkJmERC6R1qPPjo/7ltvxbLWWQfuuCNq+2++OS5acuOMGAGXXZaf3/rrw4AB8Mc/Rm399Olw8MEx31yN+VZbRTBRn1pazZ0byypl7tzl+111VdOLp0cfjfRMmrT8uAsWNL1rUOj99+NTKbl5Ndfc57nnIl3/9V+VWeb48XDttU37vfFG/gHfYl55BU4+WXcyKuWDD+I5itVWW7HpL7wwvo8+unJp6qjefBMmTKh1KkSkI3L3qn2AIcB4YAJwVolxDgfGAWOBW1O/TYCXgVdT/++2tKyddtrJpRUWL3Z/9VX3f//bfelS95kz49s9fr/yivt//qf7zTe7n3ee+3e/637//e477eR+yCHuw4e7f//77v37u//gB/F56SX3m25y79UrF/533s8eezTtPvro5cfZbDP3k09evv9qq7lvvLH7YYc1nd811zQd7+tfz//+6U/zvw86yL2x0X3SJPcf/3j5+R9/fGzHhx5yP/1097XXdh882P3dd9032CC2e79+7t26uW+zjfsWW7jvtVds/yVLYtobbmg6z+efz5edV191nzgxfu+6awxfa63ovukm97lz4/czz7hfdlmkZ+HC0uXwhhti3CVL3DfaKL/MSZPcb7013+3u/uST7tOnx/zuv9992bKm+VVo6lT3999v9e7hixbl94elS2P+F1yQHz5njvvLL5eeft4897FjW7/crI8+yqcha5ttIj2ffhrdzz4b3aedlk/7/vvnh0+bls+jOXNaXu7YsfnxZ85sfbrPPLPpNmvOv/4V6V22zH3BgtYvqy0uu8x9xIh895NPuk+Z0nSc666LclhKuetZyptvur/22opPv7JZujR/fFhZXHlllFORAkCjNxcDNzewLR+gDvg3sBnQHXgN2LpgnIHAK0Dv1L1e+u4OrJp+9wTeBvo1tzwF2CupZcvie84c98cfd3/0UffHHnOfPDk/7IMP3F980f2FF/IB69VXR/C0cKH7c88VD4JXX929e3f3uroILAuHDxjQtiB7tdXaNn01P+utV/l5Dhzovv765Y271VZNuwsvur72tbalpVQ6Nt00vkeOdL/44qbDNtvM/YQTIhD/znfi4uOAA/JpfeKJCLCaW+7997uvu26++9RT3f/85yiPu+7qfv31UXZzw//1L/ePP46g9Y033D//+fyw8eOjjN9+u/s998TvZcsiID7++Bjn6KMjwJs40f3uuyM4yU2/334R5GfTd9ppTbufeGL5dbjiiriYefll9/fei31swYJI+5Il7vfdlx/3mWciUP/BD/L96uvjgmvmzHy/BQvcn3pq+WU9+6z7jTfmy2RWbpzjjsv/PvbY2K+vvDLyNev++92vvTbyaJNN3H/0o6bDFy6MvHaP77ffzl9IvvNO03EnTMgv0939D39o2u3ufvnl+X65Y1FWNu+ff979wQfdv/nN/IVNzty5+YuH666L8V99tem2XLgw0nvHHe5jxrj/3/9F/zfeWH65f/ube9++7g0N7r/8ZRwb3d1POcX90kvz4y1b5j5jRvkB7eLFsZ0POSSm/fjj4hd4rXHNNfmLluzF8Pz5+XGmTo10uscyC/OvkrJlc8KElsfPXpyWa8GCuMDOWrYsKlEaG1uX3mKmTo3tVLiMlnz6aWzPcePcb7utadpOOsl9n33iPLxggfu55+YvxufOjXxorWL7TM4770TZzVXoZJ10UpTvlUAtA+xdgZGZ7mHAsIJxfgOc3MJ81gXeVYAtHcKnn8aBLXtgmD49PrkT2pgxEVBdcUUEejfcEBcNU6fGOFOnxon0llvcH344AoWhQyMA2WyzGH7SSbF77rKL+7e+FTW7u+1W/kXB5puXN15Ln913r8x89Om4n7XXbt/l7bRT/gKiEp8BA5peWPTosfw4m23mfuKJ5c1vzTVLD7vyyvLmscce7j/8YdN+/fu3fV2vv754/403bn66P/4xLowGD45j0be/HcF+Q0N5+fLgg3Gx9M1vRvdLL8X8ICpFRo2K7912c99hh+XTOWZM0+5ddnE/66ym/bIXObfcEsfNtdZqOs3OO+e7N9gg7gIedljkd329+29+437nne7nnOP+la80nX/uzk/28z//k/99zjnR/cwz7gcfHN377NN0/KOPjovmq6+O7ksuiQvg+++Pu4mTJuXHPfhg95494/heaj1/+9v87/XWc//5z2Peubsp8+bFXeYjj4x1/OST/PjbbRfbcN99Y91/97vI++yyPvgg7lBedtny677VVrHdtt++af9Bg5ovbyefHBUUEBUWTzwRd7p/+Uv32bPjjvcqq+T3gwMPdH/99fy8DjkkP6/TTotzaa77u99tuqybb47tcfXV8T1pUlycgvuWW8a0ixa1awiQ1VKAXbX3YJvZYcAQdz85dR8LfNHdT8uMcy/wFrA7UeN9vrs/koZtBDwIbA6c6e7DiyzjVOBUgI033nindwofShOR1nMv3s7dPf8e9sLhS5bEp1u3aCc+ZUq8JrKuLj6vvRb911kn2rsvWxZt3LfeOr579YoHeufOjXe6u8dDpdttB5ttFm3ht9wyhl92WbzO8ogjYjm77gobbwy/+EW0XX/++eju3Tv+FbW+Pt+uu2/faE8/ZEik68EHo/9668WzBHPnxrotXRrty7fdFj76KB78ffjhWO7HH8e4664LI0eWzsf994eHHsp377xzPCdQypZbxoOzzVl/ffjCF+I5g1yb/gED4PTT4Ywz8uNdcQX8+Mf57ssvh9tvb583/ABcdBGce277LEtEura//z1ertDOWnoPdq0D7AeAxUQ77P7A08B27j47M04/4F7gIHefWmp5neKPZkRE2kupC6lqy71FKPf2nyVL8g8+Q/4iLvd60IUL4wHvfv1i2MKF8cD0smXxgOGcOXERVlcXD2bOmhVv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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, 1, STOP_ITER, thresh=15000, alpha=0.000002)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "速度快，但稳定性差，需要很小的学习率"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mini-batch descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:36.331000",
     "start_time": "2016-09-12T22:42:34.094000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Mini-batch (16) descent - Stop: 15000 iterations\n",
      "Theta: [[-1.03594958  0.01835687 -0.00331658]] - Iter: 15000 - Last cost: 0.63 - Duration: 1.13s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-1.03594958,  0.01835687, -0.00331658]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, 16, STOP_ITER, thresh=15000, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "浮动仍然比较大，我们来尝试下对数据进行标准化\n",
    "将数据按其属性(按列进行)减去其均值，然后除以其方差。最后得到的结果是，对每个属性/每列来说所有数据都聚集在0附近，方差值为1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:40.439000",
     "start_time": "2016-09-12T22:42:36.333000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Gradient descent - Stop: 5000 iterations\n",
      "Theta: [[0.3080807  0.86494967 0.77367651]] - Iter: 5000 - Last cost: 0.38 - Duration: 0.80s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0.3080807 , 0.86494967, 0.77367651]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAEWCAYAAACt0rvRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAABBrklEQVR4nO3dd5hU5fn/8fdNE0RQFFSkCCJIE1AQxRK7olHssYuJCTGJJRo16s/ExMRY8tXElhi7xt5FoyKKaDSiLCLSBBE1olGRIhYQgfv3x33GPTvsLltmOFs+r+s61+6cMvPMnDKfec5znmPujoiIiIiI1F6TrAsgIiIiItJQKFyLiIiIiBSIwrWIiIiISIEoXIuIiIiIFIjCtYiIiIhIgShci4iIiIgUiMK1iIiIiNQbZvaUmY3MuhwVcncNyQDsDPwH+BxYCLwMbJea3hG4Gfgf8AXwFvB7oHVqHgPmAjPKef7xwI/LGd8NcODLvOHIZPptwPLkNb8ApgGXAOtX8l5+B3ybWmY2cC3QsZx5T0xeP/d6u6TK8FU5Zeuaeg0Htq/l574bMK+Cabn3nn79KXnzrJeMf6qc5d8DlibTP06eb72853dgaGrclrFrrL7ekrI68Le813kJODFvW7kR+Ch57bnJa/Wu5DNYlcz7BTAL+GEh1lVS/mV54x+vxvo5Bng/ef5HgQ0rmXcQMAn4Ovk7KG/fuAxYkAyXAZaafkPyvlelP8tabFeVrgNW3+/eA86tYN048Os17LefAE8Ae5ezDe6VWn8rWX1f3yw176eUPab8OFmHXfOW8WSd5B7vUsExZ1myTS1J1sm5wDrlHCvSz704Nf0g4I1k+c+AcUD31PRewAPJtM+BN4EzgablfEblHdsq3P+A6allVlJ2Oz6/htvF+cC7yXPMA+6r6msBnYG7iO33K+A14IC850+vlw+BK4GmVSzbe5Qer74EnsmbfgZxHFsC3JK3HrsBzxP73lsk21xVlq1gu24GPJUqy7eUPRZfT9njVnoYlrf9fZlsHw+T9x1EOd+ZVXzdeXnPc0CyPr5K1s9dQOdyjp3n5C03D9gt+X+D5LP5mNLvzdWOCdXY1vLX55fAtbU9tmU9EPvtH/O3lyK+3u+AO7N+39Uqc9YFqCsD0BZYDBxNfCm0AvYBBiTTN0x2lLuBbsm4LsBVuXmScbsmO9AyUsE8mTaeysN1uRtn3obcEtiOOIhOI/UlnLfMdxsj0BzoBzxIBI38g9vzycHoX1UtW+qAuAC4rpaf/WoHyvLeeyXLj0zKsQLYNG/ae5QGm02BKcDFec+/gNSXGGsO17kA3C01z3fhGtiI+PK+C+iRfFYbAD8ETl3TZ5DMv3/yfrYqwLoqd7ur4rrpl7zX7xE/Yu4G7q1g3hZECD8DWAc4LXncIpn+UyI8dwY6ATOAk1PL/wLYEyihluG6Kusg//MChhBfzPnh+NbkM59e2eedbF+nJ9vHian50tvgicBLlZT7veS1zk+N+zEwvpx5HdhyDZ9DetttnWxnbwDPkfywoZIvLmJf+DxZLwa0AQ6j9Ad2D2ARESA7JuO2SraTDSraJquz/xViO049x0hgJtAjtc5GVeW1KP0OuDVZrhXxfbEEOLy89QL0JoLayVUs33fbSjnT9iV+wPUD2iVlvDQ1/ZVkPbRK1tFioENVlq1su85bV3/MG7cbFRy7y9n+NgCeAe7Km6fC78yqvi5weLIejkne/6ZESH4PaJfa9xYQIb9Natl0uL4VuD/5jJok6+/wit5fbdZnOfOuto9QxR9lNZ2/Fu/ru3VS0fZSjeda43LUw3CtZiGlegG4+z3uvtLdl7r7M+7+ZjL9TCJkHOfu7yXzfuDup6fmgTh4PwY8mfxfUO6+zN0nAiOIAPHDKizzrbtPB44E5gO/yk0zs82Jg9soYF8z27SKRdmFqBk8DTjKzFpU640U1kiiNuNN4LiKZnL3j4ExRO1q2u3AADPbtYqvt5g4uFxYwfQziAP98e7+jofF7n6ru1+zpidP5n+SOHsyIDe+FuuqNo4larlfdPcvgd8Ah5pZm3Lm3Y2o7fqru3/j7lcTgWyPZPpI4Ap3n+fuHwJXEF94ALj7de7+HPElW1vVXgfuXkLUXg7KjTOz1sQX9y+AnmY2pKIXdPeP3f0q4ovgMjOr6fH1z8BZZrZBDZcvl7t/5e7jiWPHMOD7VVhsEPCuuz+XfIZfuPtD7v7fZPrvgf+4+5nu/r/kdWa5+zHuvriKRavu/lcb2wFj3P0d+G6d3VDFZc8gQuBJyXJL3f0e4GLgCjOz/AXc/S3g30D/ApR9JHCzu09390XAH0j2HzPrBWwLXJiU6yFgKhGyK112bUm2h0dZ/fhbq+/M5HO/ggh7dyfv/2PiR+mXxHrLmUn8CDmzgqfbDrjb3Re5+yp3f8vdH6xumapY7hPN7GUz+4uZLQB+Z2a3mdnfzexJM/sK2N3M+pjZeDNbbGbTzWxE6jlWmz/vNY40s5K8cWeY2ejk//3NbIaZfWFmH5rZWTV4Ky8mfxeb2ZdmNix57h+Z2UwzW2RmY5Lvr1wZ3Mx+YWZvA28n464ysw/MbImZTTKzXZLxw4mzTUcmzz8lGT/ezH6c/N/EzC4ws/fN7FMzu8PM1k+mdUteb6SZ/dfMPjOz/1eD91ktCtelZgMrzex2M9vPzNrlTd8LeNjdV1X0BGa2LvFFfFcyFC10uvsXwFgi5FZ1mZXEQSy9zAlASXIwnkmEqaoYCTxO/MoHOLCq5SikZIfdjdLP/IRK5u0M7AfMyZv0NfAn4kuyqi4GDjOzrcqZthfwSGXbSmWSA8UIoH1eWWu6rtb0eovNbOcKJvcjavsBSELJcpIfo+XM+6Z7VDUk3kzGr/Zcyf/9KI5qrwMz24EIQenP/FDiC/oB4odZVb78HwY2Jmpwa6KEqPGryRfdGiXBuISqHTteB3onAWB3M1svb/pexBmx2qjJ/ldTE4ATzOxsMxtiZk2rsezewEPlbFP3E012VtsnzKwv8TlPTh7/zcz+tobXucvM5pvZM2Y2MDW+vP1nEzPbKJk2N/leSE+vbN/LLbtWJK91KKn9q0DfmVsRn/8D6ZHJenqIWG9pvwF+aWYblvNcE4CLzeyHZtazmuWoie2JM8CbULr9H5P83wZ4lfiefYY4ppxKbB/pY0t6/pfynv9xYKu893IMcWYJopnrT929DXHsG1eD9/C95O8G7r6eu79iZgcRgfhQoAPxA/OevOUOJt5/3+TxROKH14ZJ+R4ws5bu/jRxfLgvef6BrO7EZNgd2II4y3pt3jw7E9vKnsBvzaxPDd5rlSlcJ9x9CfHhO9FOc76ZjTazTZJZNiLaWlfmUOAbYkf4F9Ecoyq1QzmfJUEnN6xp5X9EbIjVkb/MCZTuaHdTSTjNSQ6IRxC/8L8lvlzXuFwtnJX3udyemnY8EehmAPcC/cxsm7zlHzWzL4APiPas5dU4/wPoamb7VaVASc3I9cBF5UxuT5wKBsDMRiTl/sLMnqnkaTczs8VEG71HgDPdfXJqerXXVcrVeZ/hH1LvZQN3zz8o56xHNAtI+5w4kFd33vzpnwPrma1e41cA1VkHn5nZUqJG629E7VrOSOKgvpL4zI8ys+ZreO2Pkr8V7Zs75K2Ld8qZ57fAqWbWYQ2vVVP5x4Ef5JXpeQB3n0v8eO1EhMjPLGrLciG7KsdFWPOxrVr7X025+51EQNkXeAH41Mx+XcXF21P+e/1fanrO62a2iAg3NxHNDXD3n7v7zyt5jWOJ0+ybE03AxljpGYzy9h+I/asm+x6Uvx9X12Z563axxRmfnKvN7HOiOUZ74vPPqe13JpR+7hWtm/R6wd3fICqmylvvpxIh/xRghpnNKcA2+WjeZ/OT1LSP3P0ad1/h7kuTcY+5+8vJj4NBxLq71N2Xu/s44rqOo1PP8d387l7mrJ+7f01UqB0NkITs3sDoZJZvgb5m1japrX+9lu8152TgEnef6e4riHA8yFK118n0hbn37e53uvuC5LO4gmhaWNUKimOBK919bnKG9TziWN0sNc/vk7MaU4gfl+WF9IJRuE5JNoQT3b0z8StuM+CvyeQFRDOIyowE7k82jmXEr+bqnOZqnwSd3DBzDfN3IpoOVMd3y5jZTkB3IpRChIetzWzQGp7jEKI98JPJ47uA/SoKAsmpnNzQtZrlBfi/vM8l/ZmekLw+SVODF1j9Mz84+WW+G3FgaZ83HXf/hjhV+of8aZW4jGiekb+TltlW3H20u29AnJ6srFbmo2S+tsDVlDanqM26yjkt7zP8TRWX+zIpT1pboolUdefNn94W+DKvpnuNzKxrepuqYLbqrIP2xBfYr4htpHnyOl2ImpC7kvkeI655WNOXf6fkb0X75oS8ddEjfwZ3n0Z8iZ67hteqqfxjx/15Zfru9LK7T3D3H7h7B6IW9ntA7rRqVY6LsIZjWw33v9VU5Vjj7ne5+15EG+CTgT+Y2b5VePrPKP+9dkxNz9nW3du5ew93v6CqZ1CSkLTU3b9290uIJmi5Mwzl7T8Q+1dN9j0ofz+uro/y1u0G7v5Vavpp7r4+0cStHXHNRU5tvzOh9HOvaN18Vs743wI/S1WeAZB89n9y98HED8f7iRrU1X4om9n1qW3t/ErKd3DeZ3NjatoH5cyfHrcZ8EHe9vM+pceYip4j7W5Kw/gxwKNJ6IZoNrQ/8L6ZvWBJk44C2By4KveDgjjWWGXlNrOzLJqRfJ4ssz7lfFdXYDPic8l5n2iimF6/H6f+/5o45heNwnUFPNrK3UZpW7lngUOsgnaUFk0O9gCOM7OPzexj4nTX/mZW1Q2kypKao72I0y1VXaYJ0Xwjt8xIYoN/Iynvq6nxlRlJbJj/TZZ7gAgkx5Q3c3IqJzf8t7x5asLMdgR6AuelPvPtgWPyfrHmyvECsU7/r4KnvJX4wj20Kq/v7guIH1/5geA54OCKtpUqPO83RK3K1mZ2cDK6puuqtqaT+oVvZlsQNQqzK5h3QF5N9IBk/GrPlfw/nWpy9/+mt6kKZqvWOvC4zuJKor13rmbxeOIY+Xjymc8lwvWaPvNDiDMks6ry2pW4EPgJZb+Qai350TCYahw7cjyu93iYssfFwypeolqqtf+VpzrHGo9rUR4gmi5VpU30s8T1Bvnb1A+IoFDePlFbTuz3UP7+80lyHJoObGFlr4VI71+VLbtWuPtU4I/AdRYK9Z05i7go8Yj0yGQ9HUYcC/LL8haxHVfY9tbjbPafiAuBu5cz/eTUtvanapS3zNOsYdxHQJe8ba4r0QtNZc+RNhbokFTEHE3p2U/cfaK7H0Q0OXmU0mae1VHe639ANDdJ/6ho5e7/KW85i/bV5xD7UrukIuRzSrf9Nb3Hj4hAn9OVqAD8pFrvpIAUrhNm1tvMfpXs8LkvoKOJNlgQV2G3BW7Pndows05mdqWZDSC+iGcTpzEGJUMvYqdPn8JpZmYtU8OaTjHnl3MdMxtM7AiLSE43rmGZZslp2HuIq6ivNLOWxIY8KlXeQcRpsXLDae49E22WDkgtM5Coxa1V05C8z6VlXkgrz0jiwNE3VZb+xNXiFZ3K+yuwdzm1zSSnry6k/NOFFbkS2BHokzeuHfBPM+uRfJG0YfULeSrk7suJi3R+W9N1VSB3AQea2S7Jqd6LiGsPyqvxGk90YXZasp2ekozPteO7Azgz2W82I2qKb8stbGYtkvdqQPNkG6jpMaqm6+BS4JykHCOJC/YGpYbDiC//1dqqmtkmyXu+EDivqrWVFXH3OcB9xEXDtWZm61pcNPgY0WXZk2tYBDPb2cx+YmYbJ497ExdE5o6LFwI7mtmfLbnA1sy2NLM7rZoXZNZw/6sWi4vIvm9mbSyubdiPaI/86pqWBf5C1KbdbGabJtvn0URAO7u6Z2DKKVtXM9sptx+Y2dlEzd3LySx3ACeZWd/ks72AZP9x99lELzAXJsseQvywfWhNy65ltxO1iSOo+ndmpZLP/SzgAjM7Jnn/mxLNcdoS6608vyc6BNggN8LMfmNm26WORacTZw9q+0O5pl4lalnPMbPmZrYbUUF2b2ULpXk03XyAuFB6Q+I7M3e8PdbM1k/mWUJ0q1hd85PltkiNu56o9OqXvNb6ZnZEeQsn2hBheD6RkX5L2TMtnwDdKvk+uAc4w8y6W1Q85tpor6jB+ykIhetSXxC1nq9aXHU7gejq7lcA7r6QCFHfJvN8Qfwi/py4QGMk0ffxx+mB2MjSNV1/J9rU5oZ0OM5dbZsb0lc0n5O85gLiQDkJ2DHv9Fu+Iy1Om39OtLFaAAx294+IiwmWAnfklfcW4nTK8Aqe83jgDY+eVNLLXU3UWtb0qvhOlP1clhLdfOXee/pz+SwVOK/J+8zfBf5JBbWL7j6f+Px+W0E57qFqbUhzz7cEuJxU+1V3/wzYgagFfYnYtt4gDiA/q+pzE+uiK1EjU5N1lXZt3mc4KTcheVzuxW0evcycTITsT5P38PPUsk9Zcko0+UFwMPEjazHwI+KU6PJk9n8QbVCnEvvWv5JxOc8k73NHos/rpZReLFMttVgH/yJ+tJ5N1IRcl7d9jSb29/SX/+LkmDGVOMV6hLvfUslrDMtbF1+a2XYVzHsRUXNWG9cmx45PiB+XDwHD88L/keWUaWNiPY4ApibHkqeJ6wEuh+8ucB1GtBOebtG29iHigsn0D7DKjm1p1dr/amAJcaHVf4n3djnwM6/4moPvJLW8OxNnL2YQx9MziR5p7qvKi1s0Jbi+gsltiO+HRUTN5HBgv1ztsseFXZcTbbH/S5z6Tl8/chTRneQi4kfi4cnxrirL1sZm5Ww75Z7NSI4FVxEXFVb1O3ONks//eKLZ1wJi/bQCdqqodj71XZHev5z4Tv6MqA3dG/i+Rzvemno877N5pKoLJp/XgURl0WfENSEnJDXv1XE3cab7gbzAeTzwnpktIY7zx0KZpndrbMaZNDG5GHjZohnIDu7+CFHhdm/y3NOouMIL4mLxp4kfW+8Tx+10s5HcxaoLzKy8duG3EOvyRaIL1mWUbdu/1uX6ORURERERkVpSzbWIiIiISIEoXIuIiIiIFIjCtYiIiIhIgShci4iIiIgUSDG78Fqr2rdv7926dcu6GCIiIiLSwE2aNOkzj5trrabBhOtu3bpRUlKSdTFEREREpIEzs/crmqZmISIiIiIiBVLUcG1mw81slpnNMbNzy5n+FzN7IxlmW9xPPjdtpJm9nQzFvsWziIiIiEitFa1ZiJk1Ba4j7nA0D5hoZqPdfUZuHnc/IzX/qcA2yf8bEnePGkLcMWlSsuyiYpVXRERERKS2illzPRSY4+5zk1t43gscVMn8RxO3vgXYFxjr7guTQD2Wqt3iWUREREQkM8UM150oe2/4ecm41ZjZ5kB3YFx1ljWzUWZWYmYl8+fPL0ihRURERERqqq5c0HgU8KC7r6zOQu5+g7sPcfchHTqU2xuKiIiIiMhaU8xw/SHQJfW4czKuPEdR2iSkusuKiIiIiNQJxQzXE4GeZtbdzFoQAXp0/kxm1htoB7ySGj0G2MfM2plZO2CfZFzdc/XVMH581qUQERERkTqgaOHa3VcApxCheCZwv7tPN7OLzGxEatajgHvd3VPLLgT+QAT0icBFybi6ZdkyuP562GsvuOIKKH0LIiIiItIImTeQQDhkyBDP5A6NS5bAD38IDz8Mhx8Ot9wCbdqs/XKIiIiIyFphZpPcfUh50+rKBY31V9u28OCDcPnlEbCHDoWZM7MulYiIiIhkQOG6EMzg7LPh2Wdh4cII2A88kHWpRERERGQtU7gupN13h9dfh623hh/8AM46C1asyLpUIiIiIrKWKFwXWqdO0XvIKafERY577QUff5x1qURERERkLVC4LoYWLeCaa+Cf/4TXXoNtt4WXX866VCIiIiJSZArXxXTccTBhArRuDbvtpu76RERERBo4hetiGzAAJk6EAw+MNtgHHRQXPYqIiIhIg6NwvTZssAE89BBcdRU8/TRss03UaIuIiIhIg6JwvbaYwWmnRdvrJk1gl13gL39RMxERERGRBkThem3bbjuYPDmaiZx5Jhx8MCxalHWpRERERKQAFK6zkGsm8te/wlNPRTORV1/NulQiIiIiUksK11kxg9NPh5deise77BJhW81EREREROotheusDR0azUT23x/OOCOaiSxYkHWpRERERKQGFK7rgnbt4JFH4gLHp56K7vuefz7rUomIiIhINSlc1xVm8MtfRtvrNm1gzz3h/PPh22+zLpmIiIiIVJHCdV2zzTYwaRL86EdwySWw887wzjtZl0pEREREqkDhui5q3Rpuugnuvx9mzYrAfeedWZdKRERERNZA4bouO+IImDIl2mAff3wMS5ZkXSoRERERqYDCdV23+eYwfjz87ndw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lJ22bBnMnVs2dL/zDowbF01N0tq1Kxu20+FbTU3qlGKG6w+BLqnHnZNxOW2A/sB4iw1iU2C0mY2owrIiIiIi9VvLlqW3cs+3dCm8+y7MmVN2eO01uP/+0m4EAVq3Lr+2e8stoVMn3ThnLStmuJ4I9DSz7kQwPgo4JjfR3T8H2ucem9l44Cx3LzGzpcDdZnYlcUFjT+C1IpZVREREpO5o1ari4L18edw05513ygbv6dPh8cdjes4660T/3/nhu0ePuGizRYu1954aiaKFa3dfYWanAGOIrvhucffpZnYRUOLuoytZdrqZ3U9c/LgC+IV6ChEREREhAnHPnjHkW7kyuhKcM2f18P3cc2X78G7SBDp3jvDdvXvZv1tsEW3A1dyk2nT7cxEREZHGwB0+/jiC9ty50exk7tzS/z/6qOz86667euhO/23dOpv3UQfo9uciIiIijZ0ZdOwYwy67rD596VJ4773VQ/fcufD88/Dll2Xn33jj0lru/PDduXOjvZGOwrWIiIiIRDvvPn1iyOcOCxasHrrnzoVXXoH77osmKTnNm0eb7lzgzvWYkhs22aTBXmipcC0iIiIilTOD9u1jGDp09enffhv9eZdX6/3QQxHM09ZZJ24Tnw7c6cebblpvw7fCtYiIiIjUTvPmpU1E9txz9elffhk9nLz/fjQ9SQ+TJ8cdLtNatFg9fKdDeMeOdTZ8K1yLiIiISHGttx706xdDeb76quLw/dhj8OmnZedv0SKanfz5z3DwwUUtenUpXIuIiIhItlq3rrhfb4guBHPBOx3AO3RYi4WsGoVrEREREanb1l234ost65i62VhFRERERKQeUrgWERERESkQhWsRERERkQJRuBYRERERKRCFaxERERGRAlG4FhEREREpEIVrEREREZECUbgWERERESkQc/esy1AQZjYfeD+jl28PfJbRa8vao/Xc8GkdNw5az42D1nPDl+U63tzdy709ZIMJ11kysxJ3H5J1OaS4tJ4bPq3jxkHruXHQem746uo6VrMQEREREZECUbgWERERESkQhevCuCHrAshaofXc8GkdNw5az42D1nPDVyfXsdpci4iIiIgUiGquRUREREQKROFaRERERKRAFK5rwcyGm9ksM5tjZudmXR6pHjO7xcw+NbNpqXEbmtlYM3s7+dsuGW9mdnWyrt80s21Ty4xM5n/bzEZm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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn import preprocessing as pp\n",
    "\n",
    "scaled_data = orig_data.copy()\n",
    "scaled_data[:, 1:3] = pp.scale(orig_data[:, 1:3])\n",
    "\n",
    "runExpe(scaled_data, theta, n, STOP_ITER, thresh=5000, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "它好多了！原始数据，只能达到达到0.61，而我们得到了0.38个在这里！\n",
    "所以对数据做预处理是非常重要的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:52.663000",
     "start_time": "2016-09-12T22:42:40.442000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Gradient descent - Stop: gradient norm < 0.02\n",
      "Theta: [[1.0707921  2.63030842 2.41079787]] - Iter: 59422 - Last cost: 0.22 - Duration: 9.56s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[1.0707921 , 2.63030842, 2.41079787]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(scaled_data, theta, n, STOP_GRAD, thresh=0.02, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "更多的迭代次数会使得损失下降的更多！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:58.954000",
     "start_time": "2016-09-12T22:42:52.665000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Stochastic descent - Stop: gradient norm < 0.0004\n",
      "Theta: [[1.15237659 2.79199388 2.56661071]] - Iter: 72657 - Last cost: 0.22 - Duration: 5.12s\n"
     ]
    },
    {
     "data": {
      "image/png": "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/PclNN17m7Df+G4s24fQPGxxjP1eSv92fDN+H0sIPbrcQt1t5zpCPrCEwr2vHEvohnhpfN+hxb7H/NcWGizOKCIiIiIiGWnyNuUiIiIiIlKXknIRERERkYwpKRcRERERyZiSchERERGRjKXZ5Vsqevfu7f379886DBERERFp5aZMmfK+uxf8E8dqa3FJef/+/Zk8eXLWYYiIiIhIK2dmb9U/V3Wo+YqIiIiISMaUlIuIiIiIZCzVpNzMDjOzV81sppmNKzD9l2Y2NQ6vmdmSNOMREREREWmOUmtTbmbtgGuAQwh/S/ysmY1395dy87j7fyfm/xbhr8RFRERERNqUNM+U7w3MdPdZ7r4auAU4usT8JwF/SzEeEREREZFmKc2kfBtgTuL53Fi2ETPbFhgA/LvI9DPNbLKZTV64cGHVAxURERERyVJzudFzDHC7u68rNNHdr3X34e4+vE+fJukqUkRERESkyaSZlM8D+iWe941lhYyhOTddmTULLrgA5sypf14RERERkQqlmZQ/Cww2swFm1pGQeI/Pn8nMdgR6AE+nGEvjvP8+XH45TJmSdSQiIiIi0gqllpS7+1rgLOB+4GXgNnefYWaXmtnoxKxjgFvc3dOKpdG23z6MX3892zhEREREpFVKrUtEAHefAEzIK7so7/klacZQFd27Q69eMHNm1pGIiIiISCvUXG70bP4GD1ZSLiIiIiKpUFJerkGD1HxFRERERFKhpLxcgwaF3ldWrsw6EhERERFpZZSUl2vw4DB+881s4xARERGRVkdJebkGDQpjtSsXERERkSpTUl6uXFKuduUiIiIiUmVKysvVsyf06KEz5SIiIiJSdUrKK6FuEUVEREQkBUrKK6FuEUVEREQkBUrKKzFoELz9NqxalXUkIiIiItKKKCmvxKBB4K5uEUVERESkqpSUVyLXV7nalYuIiIhIFSkpr0SuW8Tp07ONQ0RERERaFSXllejVK4yffjrbOERERESkVVFSXgkz2HJLWLo060hEREREpBVRUl6pT30K5szJOgoRERERaUWUlFdq++1h9mx1iygiIiIiVaOkvFI77ADr18Mbb2QdiYiIiIi0EkrKK7XjjmH8yivZxiEiIiIirYaS8krtsEMY/+Uv2cYhIiIiIq2GkvJKde0axjpTLiIiIiJVoqS8IU48EdasyToKEREREWkllJQ3xNCh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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "theta = runExpe(scaled_data, theta, 1, STOP_GRAD, thresh=0.002/5, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机梯度下降更快，但是我们需要迭代的次数也需要更多，所以还是用batch的比较合适！！！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:59.693000",
     "start_time": "2016-09-12T22:42:58.957000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Mini-batch (16) descent - Stop: gradient norm < 0.004\n",
      "Theta: [[1.17350017 2.83627448 2.61439596]] - Iter: 4335 - Last cost: 0.21 - Duration: 0.38s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[1.17350017, 2.83627448, 2.61439596]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(scaled_data, theta, 16, STOP_GRAD, thresh=0.002*2, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:59.703000",
     "start_time": "2016-09-12T22:42:59.699000"
    }
   },
   "outputs": [],
   "source": [
    "#设定阈值\n",
    "def predict(X, theta):\n",
    "    return [1 if x >= 0.5 else 0 for x in model(X, theta)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:59.760000",
     "start_time": "2016-09-12T22:42:59.706000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy = 89%\n"
     ]
    }
   ],
   "source": [
    "scaled_X = scaled_data[:, :3]\n",
    "y = scaled_data[:, 3]\n",
    "predictions = predict(scaled_X, theta)\n",
    "correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y)]\n",
    "accuracy = (sum(map(int, correct)) % len(correct))\n",
    "print ('accuracy = {0}%'.format(accuracy))"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "nav_menu": {},
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": true
  },
  "toc_position": {
   "height": "691px",
   "left": "0px",
   "right": "893.9px",
   "top": "32px",
   "width": "322px"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}